package com.hzzy.service;

import java.util.Date;
import java.util.List;
import java.util.Map;

import com.hzzy.bean.HzClassCourse;
import com.hzzy.bean.HzStudent;

/**
 * 学生信息服务接口
 * @author 何剑波
 * 2016年5月11日
 */
public interface HzStudentService {
	
	/**
	 * 根据学生学号查询该学生信息
	 * @param Sno 学生学号
	 * @return
	 */
	HzStudent findBySno(String Sno);
	
	/**
	 * 根据学生密码和学生学号找找信息
	 * @param sno
	 * @param password
	 * @return
	 */
	HzStudent findBySnoAndPassword(String sno, String password);
	
	/**
	 * 根据班级Id查询所有学生的信息
	 * @param classId
	 * @return
	 */
	List<HzStudent> findByClassId(int classId);
	
	/**
	 * 给点到过的学生附上状态
	 * @param studentList
	 * @param course
	 */
	void addCheckinsState(List<HzStudent> studentList, HzClassCourse course);
	
	/**
	 * 根据班级id，点到日期，学生名称，搜索数据
	 * @param classId	班级Id
	 * @param ccdate	签到 日期
	 * @param studentName	学生名称
	 * @param studentStateMap   key:点到的状态 CheckinsStateEnum.java
	 * @return	
	 */
	int getAbnormalStudents(Integer classId, Date ccdate, String studentName, Map<Integer, List<HzStudent>> studentStateMap);
	
	/**
	 * 根据班级id，班级学期，学生名称，搜索数据
	 * @param classId
	 * @param semesterId	班级学期
	 * @param studentName
	 * @param studentStateMap
	 * @return
	 */
	int getAbnormalStudents(Integer classId, Integer semesterId, String studentName, Map<Integer, List<HzStudent>> studentStateMap);
	
	/**
	 * 根据学生Id和选定的时间，获取该学生点到异常记录
	 * @param studnetId
	 * @param ccdate
	 * @param ccstate 点到的状态
	 * @return
	 */
	List<HzStudent> findByStudentIdAndDate(String studnetId, Date ccdate, int ccstate, int classId);
	
	/**
	 * 根据学生Id和选定的时间，获取该学生点到异常记录
	 * @param studnetId
	 * @param semesterId	班级学期Id
	 * @param ccstate 点到的状态
	 * @return
	 */
	List<HzStudent> findByStudentIdAndSemesterId(String studnetId, Integer semesterId, int ccstate, int classId);
	
	
	
}
